﻿using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Wallpaper.Models.Entities;

namespace Wallpaper.Data.Configurations
{
    public class TagConfiguration : IEntityTypeConfiguration<Tags>
    {
        public void Configure(EntityTypeBuilder<Tags> builder)
        {
            // 设置表名
            builder.ToTable("tags");

            // 配置主键
            builder.HasKey(t => t.Id);
            builder.Property(t => t.Id)
                .HasMaxLength(36)
                .IsRequired()
                .HasComment("标签主键ID");

            // 标签名称配置
            builder.Property(t => t.Name)
                .HasMaxLength(50) // 标签名称一般不会太长
                .IsRequired()
                .HasComment("标签名称");

            // 创建时间配置
            builder.Property(t => t.CreatedAt)
                .IsRequired()
                .HasDefaultValueSql("CURRENT_TIMESTAMP")
                .HasComment("创建时间");

            // 更新时间配置
            builder.Property(t => t.UpdatedAt)
                .IsRequired(false) // 允许为空，创建时可能没有更新
                .HasComment("最后更新时间");


            // 添加唯一约束，确保标签名称不重复（在未删除的状态下）
            builder.HasIndex(t => t.Name)
                .HasDatabaseName("idx_tags_name")
                .IsUnique();


        }
    }
}
